# list
# 创建，添加
a = []
a.append(1)
print(a)
# 结果为：[1]

a += ["b"]
print(a)
# 结果为：[1, 'b']

# 按索引插入
l = [0, 1, 2, 4]
l.insert(3, 3)
print(l)
# 结果为：[0, 1, 2, 3, 4]

# 按索引查询
print(a[1])
# 结果为：b

# 切片
print(l[1:3])
# 结果为：[1, 2]

# 列表最后一个
print(l[-1])
# 结果为：4

# 切片按步长取值
l_2 = list(range(100))
print(l_2[0:20:2])
# 结果为：[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 检索
new_l = list("hello, world")
print(new_l.index("r"))
# 结果为：9

# 索引赋值
new_l[9] = "o"
print(new_l)
# 结果为：['h', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'o', 'l', 'd']

# 切片赋值
new_l[0:5] = "hi"
print(new_l)
# 结果为：['h', 'i', ',', ' ', 'w', 'o', 'o', 'l', 'd']

# 末尾删除元素并返回元素
print(new_l.pop())
# 结果为：d
print(new_l)
# 结果为：['h', 'i', ',', ' ', 'w', 'o', 'o', 'l']

# 清除列表元素
l.clear()
print(l)
# 结果为：[]

# 排序
l = [1, 5, 4, 0, 6]
l.sort()
print(l)
# 结果为：[0, 1, 4, 5, 6]

# 倒序
l.reverse()
print(l)
# 结果为：[6, 5, 4, 1, 0]



# tuple
# 按索引查询值
t = (2, 4, 0, 7)
print(t[3])
# 结果为：7

# 按值查询索引
print(t.index(0))
# 结果为：2

# 切片
print(t[0:2])
# 结果为：(2, 4)



# dict
# 键対值赋值
d = {"a": 1, "b": 2, "e": 5, "c":3}
d["d"] = 4
print(d)
# 结果为：{'a': 1, 'b': 2, 'e': 5, 'c': 3, 'd': 4}

# 合并字典
d_2 = {"h": 8}
d.update(d_2)
print(d)
# 结果为：{'a': 1, 'b': 2, 'e': 5, 'c': 3, 'd': 4, 'h': 8}

# 没有key则加入新元素
d.setdefault("g", 7)
print(d)
# 结果为：{'a': 1, 'b': 2, 'e': 5, 'c': 3, 'd': 4, 'h': 8, 'g': 7}
# 有key则返回key值
d.setdefault("a", 5)
print(d)
# 结果为：{'a': 1, 'b': 2, 'e': 5, 'c': 3, 'd': 4, 'h': 8, 'g': 7}

# 键对值访问
print(d["c"])
# 结果为：3
print(d.get("b"))
# 结果为：2

# 返回所有key
print(d.keys())
# 结果为：dict_keys(['a', 'b', 'e', 'c', 'd', 'h', 'g'])

# 返回所有value
print(d.values())
# 结果为：dict_values([1, 2, 5, 3, 4, 8, 7])

# 返回所有键对值
print(d.items())
# 结果为：dict_items([('a', 1), ('b', 2), ('e', 5), ('c', 3), ('d', 4), ('h', 8), ('g', 7)])

# 键对值赋值
d["a"] = 100
print(d)
# 结果为：{'a': 100, 'b': 2, 'e': 5, 'c': 3, 'd': 4, 'h': 8, 'g': 7}
d.update({"b": 200, "c": 300})
print(d)
# 结果为：{'a': 100, 'b': 200, 'e': 5, 'c': 300, 'd': 4, 'h': 8, 'g': 7}

# 删除当前键对值
d.pop("g")
print(d)
# 结果为：{'a': 100, 'b': 200, 'e': 5, 'c': 300, 'd': 4, 'h': 8}
# 返回一个item
print(d.popitem())
# 结果为：('h', 8)

# 清空字典
d.clear()
print(d)
# 结果为：{}



# set
s = set()
# 添加
s.add("a")
print(s)
# 结果为：{'a'}

# 判断
print("a" in s)
# 结果为：True

# union合并
s_2 = {"c", "d"}
new_s = s.union(s_2)
print(new_s)
# 结果为：{'c', 'a', 'd'}

# 移除
new_s.remove("a")
print(new_s)
# 结果为：{'c', 'd'}
new_s.discard("f")
print(new_s)
# 结果为：{'d', 'c'}

# 无序删除并返回
new_s.pop()
print(new_s)
# 结果为：{'d'}

